In [75]:
## This code cell will not be shown in the HTML version of this notebook
# imports from custom library
import sys
sys.path.append('../../')
datapath = '../../mlrefined_datasets/nonlinear_superlearn_datasets/'

# plotting tools
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import autograd.numpy as np

# this is needed to compensate for %matplotlib notebook's tendancy to blow up images when plotted inline
%matplotlib notebook
from matplotlib import rcParams
rcParams['figure.autolayout'] = True
from mlrefined_libraries import nonlinear_superlearn_library as nonlib


%load_ext autoreload
%autoreload 2
The autoreload extension is already loaded. To reload it, use:
  %reload_ext autoreload

polynomial approximation and animation

In [98]:
# load in 
import copy
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np

# load in dataset
csvname = datapath + 'noisy_sin_sample.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = copy.deepcopy(data[:-1,:])
y = copy.deepcopy(data[-1:,:])

### boosting ###
num_units = 25
runs1 = []
for j in range(num_units):
    print ('fitting ' + str(j + 1) + ' units')
    
    # import the v1 library
    mylib1 = nonlib.library_v1.superlearn_setup.Setup(x,y)

    # choose features
    mylib1.choose_features(name = 'polys',degree = j + 1)

    # choose normalizer
    mylib1.choose_normalizer(name = 'standard')

    # choose cost
    mylib1.choose_cost(name = 'least_squares')

    # fit an optimization
    mylib1.fit(max_its = 1,optimizer = 'newtons method',epsilon=10**(-10))

    # add model to list
    runs1.append(copy.deepcopy(mylib1))
fitting 1 units
fitting 2 units
fitting 3 units
fitting 4 units
fitting 5 units
fitting 6 units
fitting 7 units
fitting 8 units
fitting 9 units
fitting 10 units
fitting 11 units
fitting 12 units
fitting 13 units
fitting 14 units
fitting 15 units
fitting 16 units
fitting 17 units
fitting 18 units
fitting 19 units
fitting 20 units
fitting 21 units
fitting 22 units
fitting 23 units
fitting 24 units
fitting 25 units
In [99]:
# animate the business
frames = 5
demo1 = nonlib.main_regression_animators.Visualizer(csvname)
demo1.animate_regressions(runs1,frames)
Out[99]:



REGRESSION stump approximation and animation

In [61]:
# generate set of split points and dimensions for all possible steps, as defined by 
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np

# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + 'noisy_sin_sample.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]

# import booster
mylib2 = nonlib.boost_lib2.superlearn_setup.Setup(x,y)

# choose normalizer
mylib2.choose_normalizer(name = 'standard')

# choose cost|
mylib2.choose_cost(name = 'least_squares')

# choose optimizer
mylib2.choose_optimizer('newtons_method',max_its=1)

# run boosting
mylib2.boost(num_rounds=200)

# plot round history
mylib2.plot_history()
In [62]:
# animate the business
frames = 10
demo1 = nonlib.main_regression_animators.Visualizer(csvname)
demo1.animate_boosting_regressions(mylib2,frames)
Out[62]:



CLASSIFICATION stump approximation and animation

In [38]:
# generate set of split points and dimensions for all possible steps, as defined by 
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np

# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + 'new_circle_data.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]

# import booster
mylib2 = nonlib.boost_lib2.superlearn_setup.Setup(x,y)

# choose normalizer
mylib2.choose_normalizer(name = 'none')

# choose cost|
mylib2.choose_cost(name = 'softmax')

# choose optimizer
mylib2.choose_optimizer('newtons_method',max_its=1)

# run boosting
mylib2.boost(num_rounds=70)

# plot round history
mylib2.plot_history()
In [40]:
# animate the business
frames = 70
demo1 = nonlib.main_classification_animators.Visualizer(csvname)
demo1.animate_boosting_classifications(mylib2,frames)
Out[40]:



NEXT CLASSIFICATION

In [88]:
# generate set of split points and dimensions for all possible steps, as defined by 
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np

# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + '2eggs_data.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]

# import booster
mylib2 = nonlib.boost_lib2.superlearn_setup.Setup(x,y)

# choose normalizer
mylib2.choose_normalizer(name = 'none')

# choose cost|
mylib2.choose_cost(name = 'softmax')

# choose optimizer
mylib2.choose_optimizer('newtons_method',max_its=1)

# run boosting
mylib2.boost(num_rounds=50)

# plot round history
mylib2.plot_history()
In [89]:
# animate the business
frames = 10
demo1 = nonlib.main_classification_animators.Visualizer(csvname)
demo1.animate_boosting_classifications(mylib2,frames)
Out[89]:



Networks

In [12]:
 
fitting 1 units
fitting 2 units
fitting 3 units
fitting 4 units
fitting 5 units
fitting 6 units
fitting 7 units
fitting 8 units
fitting 9 units
fitting 10 units
In [34]:
# load in 
import copy
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np

# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + 'new_circle_data.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]


### boosting ###
num_units = 10
run2 = []
for j in range(num_units):
    #print ('fitting ' + str(j + 1) + ' units')
    
    # import the v1 library
    mylib2 = nonlib.library_v1.superlearn_setup.Setup(x,y)

    # choose features
    mylib2.choose_features(name = 'multilayer_perceptron',layer_sizes = [2,j+1,1],activation = 'tanh')

    # choose normalizer
    mylib2.choose_normalizer(name = 'standard')

    # choose cost
    mylib2.choose_cost(name = 'softmax')

    # fit an optimization
    mylib2.fit(max_its = 5000,alpha_choice = 10**(0),optimizer = 'gradient descent')

    # add model to list
    run2.append(copy.deepcopy(mylib2))
    
    
# animate the business
frames = 10
demo1 = nonlib.main_classification_animators.Visualizer(csvname)
demo1.animate_classifications(run2,frames)
Out[34]:



In [43]:
# load in 
import copy
from mlrefined_libraries import nonlinear_superlearn_library as nonlib
import autograd.numpy as np

# the mid-point between each set of consecutive inputs along each input dimension
csvname = datapath + 'new_circle_data.csv'
data = np.loadtxt(csvname,delimiter = ',')
x = data[:-1,:]
y = data[-1:,:]


### boosting ###
num_units = 5
run2 = []
for j in range(num_units):
    #print ('fitting ' + str(j + 1) + ' units')
    
    # import the v1 library
    mylib2 = nonlib.library_v1.superlearn_setup.Setup(x,y)

    # choose features
    mylib2.choose_features(name = 'polys',degree = j+1)

    # choose normalizer
    mylib2.choose_normalizer(name = 'standard')

    # choose cost
    mylib2.choose_cost(name = 'softmax')

    # fit an optimization
    mylib2.fit(max_its = 1,optimizer = 'newtons method')

    # add model to list
    run2.append(copy.deepcopy(mylib2))
    
    
# animate the business
frames = 10
demo1 = nonlib.main_classification_animators.Visualizer(csvname)
demo1.animate_classifications(run2,frames)
(3, 1)
(6, 1)
(10, 1)
(15, 1)
(21, 1)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-43-83d8060f2f8f> in <module>()
     39 frames = 10
     40 demo1 = nonlib.main_classification_animators.Visualizer(csvname)
---> 41 demo1.animate_classifications(run2,frames)

/Users/Nurgetson/Dropbox/mlrefined/mlrefined_libraries/nonlinear_superlearn_library/main_classification_animators.py in animate_classifications(self, runs, frames, **kwargs)
     31     def animate_classifications(self,runs,frames,**kwargs):
     32         # select subset of runs
---> 33         inds = np.arange(0,len(runs),int(len(runs)/float(frames)))
     34 
     35         # pull out cost vals

/Users/Nurgetson/anaconda/lib/python3.5/site-packages/autograd/tracer.py in f_wrapped(*args, **kwargs)
     46             return new_box(ans, trace, node)
     47         else:
---> 48             return f_raw(*args, **kwargs)
     49     f_wrapped.fun = f_raw
     50     f_wrapped._is_autograd_primitive = True

ZeroDivisionError: division by zero
In [ ]:
 
In [ ]:
 

comparison test

In [73]:
demo999.runs2 = demo999.run_net(12)
In [74]:
# load in data
# csvname = datapath + 'new_circle_data.csv'
# demo999 = nonlib.main_classification_comparison.Visualizer(csvname)

# # run approximators
# demo999.runs1 = demo999.run_poly(5)
# demo999.runs2 = demo999.run_net(5)
# demo999.runs3 = demo999.run_trees(20)

# animate
frames = 5
demo999.animate_comparisons(frames)
Out[74]:



In [ ]:
 
In [ ]:
 
In [132]:
 
In [158]:
 
In [162]:
 
In [168]:
# csvname = datapath + 'perfect_circle_data.csv'
# demo999 = nonlib.main_classification_comparison.Visualizer(csvname)

demo999.runs3 = demo999.run_trees(100,50)
demo999.runs1 = demo999.run_poly(5)
demo999.runs2 = demo999.run_net(50)

# # animate
frames = 5
demo999.animate_comparisons(frames,pt_size = 20)
Out[168]:



In [77]:
demo999.runs2 = demo999.run_net(10)